#飞书api，代表一些和具体业务产品使用的全局接口信息，比如token
import requests
from config.protocol.http_protocol import HttpProtocol
from utils.files_tools import FileTool


class FeiShuApi():
    def __init__(self):
        # 返回一个标准的dict结构
        env_data = FileTool.read_yaml("env")
        default_env = env_data["default"]

        # 获取到配置文件中的基地址
        self.base_url = env_data[default_env]

    def feishu_req(self,method,url,**kwarg):

        """
        一些与飞书产品强相关，但是和具体业务逻辑无关的封装
        :return:
        """
        #**kwarg代表接口的不定长参数，比如header
        if kwarg.get("headers"):
            kwarg["headers"]["Authorization"] = f"Bearer {self.get_token()}"

        else:
            kwarg["headers"] = {"Authorization": f"Bearer {self.get_token()}"}
            r = HttpProtocol.request(method,self.base_url+url,**kwarg)
            return r




    def get_token(self):

        url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
        body_data = {
            "app_id": "cli_a2d7353566b8d00d",
            "app_secret": "RC6qtNhSLYwNfR1wVKOzGdkRuC43RlRw"
        }
        r = HttpProtocol.request("POST",url,json=body_data)
        token = r.get("tenant_access_token")
        return token





